package net.cellkyborg.server;

public class Cryption {

    
    public int[] cryptArray;
    public int[] keySetArray;
    public int keyArrayIdx;
    public int cryptVar1=0;
    public int cryptVar2=0;
    public int cryptVar3=0;
    

    public Cryption(int[] is) {
    	keySetArray = new int[256];
    	cryptArray = new int[256];
    	
        for (int i = 0; (is.length ^ 0xffffffff) < (i ^ 0xffffffff); i++) {
        	keySetArray[i] = is[i];
        	//System.out.print(is[i]);
        }
        //System.out.println();
            

        initializeKeySet();
    }

    public int getNextKey() {
    	
        if (keyArrayIdx-- == 0) {
            generateNextKeySet();
            keyArrayIdx = 255;
        }
        
        //return keySetArray[keyArrayIdx];
        return 0;
    }

    public void generateNextKeySet() {

        cryptVar2 += ++cryptVar3;

        for (int i_0_ = 0; (i_0_ ^ 0xffffffff) > -257; i_0_++) {
            int i_1_ = cryptArray[i_0_];

            if (((i_0_ & 0x2) ^ 0xffffffff) != -1) {
                if (((0x1 & i_0_) ^ 0xffffffff) != -1) {
                    cryptVar1 ^= cryptVar1 >>> -710430160;
                } else {
                    cryptVar1 ^= (cryptVar1 << 137707170);
                }
            } else if (((i_0_ & 0x1) ^ 0xffffffff) == -1) {
                cryptVar1 ^= (cryptVar1 << 696271917);
            } else {
                cryptVar1 ^= cryptVar1 >>> -798226522;
            }

            cryptVar1 += cryptArray[0xff & (128 + i_0_)];

            int i_2_;
            cryptArray[i_0_] = i_2_ = cryptVar2 +
                    cryptArray[(method111(i_1_, 1020) >> -1414572030)] +
                    cryptVar1;
            keySetArray[i_0_] = cryptVar2 = i_1_ +
                    (cryptArray[method111(i_2_ >> -106957112 >> 32165922,
                        255)]);
        }
    }

    public void initializeKeySet() {
        int i_4_;
        int i_5_;
        int i_6_;
        int i_7_;
        int i_8_;
        int i_9_;
        int i_10_;
        int i_3_ = i_4_ = i_5_ = i_6_ = i_7_ = i_8_ = i_9_ = i_10_ = -1640531527;

        for (int i_11_ = 0; i_11_ < 4; i_11_++) {
            i_3_ ^= (i_4_ << 696010955);
            i_4_ += i_5_;
            i_4_ ^= i_5_ >>> 2031751522;
            i_7_ += i_4_;
            i_6_ += i_3_;
            i_5_ += i_6_;
            i_5_ ^= (i_6_ << 1165729160);
            i_6_ += i_7_;
            i_6_ ^= i_7_ >>> -841880176;
            i_9_ += i_6_;
            i_8_ += i_5_;
            i_7_ += i_8_;
            i_7_ ^= (i_8_ << 1294145610);
            i_10_ += i_7_;
            i_8_ += i_9_;
            i_8_ ^= i_9_ >>> 1657577156;
            i_3_ += i_8_;
            i_9_ += i_10_;
            i_9_ ^= (i_10_ << -1701312056);
            i_10_ += i_3_;
            i_10_ ^= i_3_ >>> 469871337;
            i_4_ += i_9_;
            i_5_ += i_10_;
            i_3_ += i_4_;
        }

        for (int i_12_ = 0; i_12_ < 256; i_12_ += 8) {
            i_4_ += keySetArray[i_12_ + 1];
            i_10_ += keySetArray[i_12_ + 7];
            i_6_ += keySetArray[3 + i_12_];
            i_8_ += keySetArray[i_12_ - -5];
            i_7_ += keySetArray[i_12_ + 4];
            i_9_ += keySetArray[i_12_ + 6];
            i_3_ += keySetArray[i_12_];
            i_3_ ^= (i_4_ << -1165454517);
            i_6_ += i_3_;
            i_5_ += keySetArray[i_12_ - -2];
            i_4_ += i_5_;
            i_4_ ^= i_5_ >>> 113505346;
            i_7_ += i_4_;
            i_5_ += i_6_;
            i_5_ ^= (i_6_ << -862024280);
            i_8_ += i_5_;
            i_6_ += i_7_;
            i_6_ ^= i_7_ >>> 2106882352;
            i_7_ += i_8_;
            i_9_ += i_6_;
            i_7_ ^= (i_8_ << -2108954166);
            i_10_ += i_7_;
            i_8_ += i_9_;
            i_8_ ^= i_9_ >>> -566876636;
            i_3_ += i_8_;
            i_9_ += i_10_;
            i_9_ ^= (i_10_ << 1738250824);
            i_10_ += i_3_;
            i_4_ += i_9_;
            i_10_ ^= i_3_ >>> 324631881;
            i_3_ += i_4_;
            i_5_ += i_10_;
            cryptArray[i_12_] = i_3_;
            cryptArray[i_12_ - -1] = i_4_;
            cryptArray[i_12_ - -2] = i_5_;
            cryptArray[3 + i_12_] = i_6_;
            cryptArray[i_12_ - -4] = i_7_;
            cryptArray[5 + i_12_] = i_8_;
            cryptArray[i_12_ + 6] = i_9_;
            cryptArray[i_12_ + 7] = i_10_;
        }

        for (int i_13_ = 0; (i_13_ ^ 0xffffffff) > -257; i_13_ += 8) {
            i_4_ += cryptArray[1 + i_13_];
            i_5_ += cryptArray[i_13_ + 2];
            i_6_ += cryptArray[i_13_ + 3];
            i_9_ += cryptArray[6 + i_13_];
            i_3_ += cryptArray[i_13_];
            i_3_ ^= (i_4_ << -970495605);
            i_6_ += i_3_;
            i_4_ += i_5_;
            i_10_ += cryptArray[i_13_ - -7];
            i_7_ += cryptArray[4 + i_13_];
            i_4_ ^= i_5_ >>> 316340898;
            i_8_ += cryptArray[5 + i_13_];
            i_5_ += i_6_;
            i_5_ ^= (i_6_ << 63674536);
            i_7_ += i_4_;
            i_8_ += i_5_;
            i_6_ += i_7_;
            i_6_ ^= i_7_ >>> 1141003152;
            i_7_ += i_8_;
            i_7_ ^= (i_8_ << 605617322);
            i_9_ += i_6_;
            i_10_ += i_7_;
            i_8_ += i_9_;
            i_8_ ^= i_9_ >>> 325426308;
            i_9_ += i_10_;
            i_3_ += i_8_;
            i_9_ ^= (i_10_ << 854622952);
            i_10_ += i_3_;
            i_4_ += i_9_;
            i_10_ ^= i_3_ >>> -630544503;
            i_3_ += i_4_;
            i_5_ += i_10_;
            cryptArray[i_13_] = i_3_;
            cryptArray[i_13_ - -1] = i_4_;
            cryptArray[2 + i_13_] = i_5_;
            cryptArray[3 + i_13_] = i_6_;
            cryptArray[i_13_ + 4] = i_7_;
            cryptArray[i_13_ - -5] = i_8_;
            cryptArray[6 + i_13_] = i_9_;
            cryptArray[7 + i_13_] = i_10_;
        }

		generateNextKeySet();
		keyArrayIdx = 256;
    }
    
    public static int method111(int i, int i_11_) {
        return i & i_11_;
    }
}
